/////////////////////////////////////////////////////////////////////////////
// Filename: transformations.h
/////////////////////////////////////////////////////////////////////////////

#ifndef TRANSFORMATIONS_H
#define TRANSFORMATIONS_H

#define PI 3.14159265

#include "Matrix4.h"
#include <math.h>
#include <stdio.h>

//Standard Affine transformations
Matrix4 translate(const Vector3 &T);

Matrix4 scale(const Vector3 &S);

Matrix4 rotate_x(float theta);

Matrix4 rotate_y(float theta);

Matrix4 rotate_z(float theta);

//This should implement arbitrary rotation of angle 'theta' around the axis 'axis'
//which passes through the point 'point'
Matrix4 rotate(const Vector3 &axis, float theta, const Vector3 &point=Vector3(0,0,0));

//similar to gluLookAt function of OpenGL
Matrix4 look_at(const Vector3 &eye, const Vector3 &at, const Vector3 &up);

#endif 

/////////////////////////////////////////////////////////////////////////////
//                               END OF FILE                               //
/////////////////////////////////////////////////////////////////////////////
